Лабораторная работа №1
2025-09-13
Целью данной лабораторной работы является изучение методов кодирования и модуляции сигналов с помощью высокоуровнего языка программирования Octave. Определение спектра и параметров сигнала. Демонстрация принципов модуляции сигнала на примере аналоговой амплитудной модуляции. Исследование свойства самосинхронизации сигнала.
Построить график функции 𝑦 = sinx + (1/3)sin3x + (1/5)sin5x на интервале [−10; 10], используя Octave и функцию plot. График экспортировать в файлы формата .eps, .png.
Добавить график функции 𝑦 = cosx + (1/3)cos3x + (1/5)cos5xна интервале [−10; 10]. График экспортировать в файлы формата .eps, .png
Разработать код m-файла, результатом выполнения которого являются графики меандра, реализованные с различным количеством гармоник.
Определить спектр двух отдельных сигналов и их суммы.
Выполнить задание с другой частотой дискретизации. Пояснить, что будет,если взять частоту дискретизации меньше 80 Гц?
Продемонстрировать принципы модуляции сигнала на примере аналоговой амплитудной модуляции.
По заданных битовых последовательностей требуется получить кодированные сигналы для нескольких кодов, проверить свойства самосинхронизуемости кодов, получить спектры.
Сигнал — это физическая величина, изменяющаяся во времени и несущая информацию. Он может быть аналоговым или дискретным. Для перевода в цифровую форму используется дискретизация и квантование, выполняемые аналого-цифровым преобразователем. Согласно теореме Котельникова, частота дискретизации должна быть более чем в два раза выше максимальной частоты сигнала.
Для анализа применяют спектральное разложение, основанное на ряде и преобразовании Фурье, что позволяет выделить амплитуды и фазы гармонических составляющих. В цифровой обработке используются дискретное и быстрое преобразования Фурье.
При передаче данных применяется модуляция — изменение амплитуды, частоты или фазы несущего колебания. Для представления двоичной информации используются различные способы кодирования сигналов: NRZ, AMI, RZ, а также коды Манчестер и дифференциальный Манчестер.
Для моделирования и обработки сигналов в учебных задачах широко используется язык Octave. Он поддерживает работу с матрицами, содержит набор встроенных математических функций и средства визуализации, что делает его удобным инструментом для анализа сигналов.
Запускаю в вашей ОС Octave с оконным интерфейсом. Перехожу в окно редактора. Воспользовавшись меню или комбинацией клавиш ctrl + n создаю новый сценарий. Сохраняю его в рабочий каталог с именем, plot_sin.m. В окне редактора повторяю листинг по построению графика функции y = sinx + (1/3)sin3x + (1/5)sin5x на интервале [−10; 10]
Скрипт построение графика функции
Запускаю сценарий на выполнение. В качестве результата выполнения кода открылось окно с построенным графиком и в рабочем каталоге появились файлы с графиками в форматах .eps, .png.
графика функции y = sinx + (1/3)sin3x + (1/5)sin5x на интервале [−10; 10]
Сохраняю сценарий под другим названием и изменяю его так, чтобы на одном графике располагались отличающиеся по типу линий графики функций y = cosx + (1/3)cos3x + (1/5)cos5x на интервале [−10; 10].
Скрипт построения графика функций y1 и y2 на интервале [−10; 10]
Итоговое изображение
Графика функций y1 и y2 на интервале [−10; 10]
Создаю новый сценарий и сохраните его в рабочий каталог с именем, meandr.m. В коде созданного сценария задаю начальные значения
Задание начальные значения
Разложение импульсного сигнала в форме меандра в частичный ряд Фурье можно задать формулой. Гармоники, образующие меандр, имеют амплитуду, обратно пропорциональную номеру соответствующей гармоники в спектре.
Формула разложение импульсного сигнала
Далее задаю массив значений гармоник массив элементов ряда.
Задание массив значений гармоник массив элементов ряда
Далее для построения в одном окне отдельных графиков меандра с различным количеством гармоник реализую суммирование ряда с накоплением и воспользуюсь функциями subplot и plot для построения графиков.
Функциями subplot и plot для построения графиков
Экспортирую полученный график в файл в формате .png.
Создание файла в формате .png
Итоговый график.
Графики меандра, содержащего различное число гармоник
В рабочем каталоге создаю каталог spectre1 и в нём новый сценарий с именем, spectre.m. В коде созданного сценария задаю начальные значения.
Задание начальных значений
Далее в коде задаю два синусоидальных сигнала разной частоты.
Задание два синусоидальных сигнала
Строю графики сигналов.
График сигналов
Итоговый график.
Два синусоидальных сигнала разной частоты
С помощью быстрого преобразования Фурье нахожу спектры сигналов, добавив в файл spectre.m следующий код.
Нахождения спектра сигналов
Учитывая реализацию преобразования Фурье, корректирую график спектра: отбрасываю дублирующие отрицательные частоты, а также принимаю в расчёт то, что на каждом шаге вычисления быстрого преобразования Фурье происходит суммирование амплитуд сигналов.Итоговый график.
График спектров синусоидальных сигналов
Нахожу спектр суммы рассмотренных сигналов, создав каталог spectr_sum и файл в нём spectre_sum.m с кодом.
Спектр суммы рассмотренных сигналов
В результате получается аналогичный предыдущему результат, т.е. спектр суммы сигналов должен быть равен сумме спектров сигналов, что вытекает из свойств преобразования Фурье.
Спектр суммарного сигнала
В рабочем каталоге создаю каталог modulation и в нём новый сценарий с именем am.m.
Принципы модуляции сигнала на примере аналоговой амплитудной модуляции
В результате получаю, что спектр произведения представляет собой свёртку спектров.
Спектр сигнала при амплитудной модуляции
В рабочем каталоге создаю каталог coding и в нём файлы main.m, maptowave.m, unipolar.m, ami.m, bipolarnrz.m, bipolarrz.m, manchester.m, diffmanc.m, calcspectre.m.
Создание каталога и файлов
В окне интерпретатора команд проверяю, установлен ли у вас пакет расширений signal. Она у меня установлена.
Пакет расширений signal
В файле main.m подключаю пакет signal и задаю входные кодовые последовательности.
Редактирование main.m
Затем в этом же файле прописваю вызовы функций для построения графиков модуляций кодированных сигналов для кодовой последовательности data.
Редактирование main.m
Затем в этом же файле прописываю вызовы функций для построения графиков модуляций кодированных сигналов для кодовой последовательности data_sync.
Редактирование main.m
Далее в этом же файле прописываю вызовы функций для построения графиков спектров.
Редактирование main.m
В файле maptowave.m пропишите функцию, которая по входному битовому потоку строит график сигнала.
Редактирование maptowave.m
В файлах unipolar.m, ami.m, bipolarnrz.m, bipolarrz.m, manchester.m, diffmanc.m прописываю соответствующие функции преобразования кодовой последовательности data с вызовом функции maptowave для построения соответствующего графика. Униполярное кодирование:
Редактирование unipolar.m
Кодирование AMI:
Редактирование ami.m
Кодирование NRZ:
Редактирование bipolarnrz.m
Кодирование RZ:
Редактирование bipolarrz.m
Манчестерское кодирование:
Редактирование manchester.m
Дифференциальное манчестерское кодирование:
Редактирование diffmanc.m
В файле calcspectre.m прописываю функцию построения спектра сигнала.
Редактирование calcspectre.m
Запускаю главный скрипт main.m. В каталоге signal получены файлы с графиками кодированного сигнала.
Каталоге signal
В каталоге sync— файлы с графиками, иллюстрирующими свойства самосинхронизации.
Каталоге sync
В каталоге spectre — файлы с графиками спектров сигналов.
Каталоге spectre
В ходе выполнения лабораторной работы № 1 я изучила методы кодирования и модуляции сигналов с помощью высокоуровнего языка программирования Octave. Определила спектр и параметр сигнала. Демонстрировала принципы модуляции сигнала на примере аналоговой амплитудной модуляции. Исследовала свойства самосинхронизации сигнала.